<?php 
/**
 * 货品列表控制器
 */
class ShopListController extends AuthController{
	public $model;
	public function __init(){
		parent::__init();
		//关联模型
		$this->model = K('ShopList');
	}
	
	//货品列表首页
	public function index(){
		//获得get传来的sid(商品id)和tid('商品类型id')
		$sid = Q('get.sid',0,'intval');
		$tid = Q('get.tid',0,'intval');
		
		//通过该tid查询类型属性表得到对应的商品规格数据
		$spec = K('TypeAttr')->where("attr_type=1 AND type_tid={$tid}")->all();
		//重组数组
		foreach ($spec as $k => $v) {
			$spec[$k]['option'] = K('ShopAttr')->where("shop_sid={$sid} AND type_attr_ta_id={$v['ta_id']}")->all();
		}		
		//分配商品规格数据
		$this->assign('spec',$spec);	
		
		//获得该商品所填写的货品列表数据
		$listData = $this->model->where("shop_sid={$sid}")->all();
		//重组数组
		foreach ($listData as $k => $v) {
			$listData[$k]['spec'] = K('ShopAttr')->where("said in (" . $v['combine'] . ")")->getField('savalue',true);
		}
		//分配该商品所填写的货品列表数据
		$this->assign('listData',$listData);		
		$this->display();
	}
	
	//添加货品数据
	public function add(){
		if(IS_POST){
			//得到post里的spec数组
			$spec = $_POST['spec'];
			//判断用户有没有选择商品规格
			if(in_array('0', $spec)){
				$this->error('请选择商品规格');
			}		
			//将$spec转为字符串并存入post
			$_POST['combine'] = (implode(',', $spec));	
			//判断添加的规格是否存在,如果存在则提示用户
			if($this->model->where("combine='{$_POST['combine']}'")->find()){
				$this->error('已有该组合属性,请重新选择');
			}
			//调用模型的添加，里面包含自动验证
		 	if(!$this->model->addData()){
		 		$this->error($this->model->error);
		 	} 
			$this->success('添加成功');
		}
	}
	
	//编辑货品数据
	public function edit(){
		//获得get传来的slid(货品列表id)和tid('商品类型id')
		$slid = Q('get.slid',0,'intval');		
		$tid = Q('get.tid',0,'intval');		
		//获得该条货品列表数据
		$oldData = $this->model->where("slid={$slid}")->find();
		//分配旧数据
		$this->assign('oldData',$oldData);
		
		//获得该条货品列表的商品属性id
		$selected = $oldData['combine'];
		$selected = (explode(',', $selected));
		//分配数据
		$this->assign('selected',$selected);
		
		//获得该条货品列表对应的商品id
		$sid = $oldData['shop_sid'];
		//通过$tid查询类型属性表得到对应的商品规格数据
		$spec = K('TypeAttr')->where("attr_type=1 AND type_tid={$tid}")->all();
		//重组数组
		foreach ($spec as $k => $v) {
			$spec[$k]['option'] = K('ShopAttr')->where("shop_sid={$sid} AND type_attr_ta_id={$v['ta_id']}")->all();
		}		
		//分配商品规格数据		
		$this->assign('spec',$spec);
		
		if(IS_POST){
			$slid = Q('post.slid',0,'intval');
			//得到post里的spec数组
			$spec = $_POST['spec'];
			//判断用户有没有选择商品规格
			if(in_array('0', $spec)){
				$this->error('请选择商品规格');
			}
			//将$spec转为字符串并存入post
			$_POST['combine'] = (implode(',', $spec));	
			$ishave = $this->model->where("combine='{$_POST['combine']}'")->find();
			//判断添加的规格是否存在,如果存在则提示错误(把自己排除掉)
			if(!$ishave || $_POST['combine']==$_POST['oldcombine']){
				//修改数据
				$this->model->where("slid={$slid}")->update();
				//获得post隐藏域里的sid值和tid值
				$sid=Q('post.shop_sid',0,'intval');
				$tid=Q('post.tid',0,'intval');
				//成功提示
				$this->success('修改成功',U('Admin/ShopList/index',array('sid'=>$sid,'tid'=>$tid)));
			}else{
				$this->error('已有该组合属性,请重新选择');
			}
		}
						
	    $this->display();
	}
	
	
	//删除货品列表
	public function del(){
	    //得到get传来的slid值
	    $slid = Q('get.slid',0,'intval');
		$this->model->where("slid={$slid}")->delete();
		$this->success('删除成功');
	}
	//异步验证数据是否存在
	public function getSpec(){
		//如果不是异步发送则错误提示
		if(!IS_AJAX) $this->error('非法请求');		
		
		$spec = $_POST['SpecArray'];
		$spec = (implode(',', $spec));		
		//判断该条数据是否在货品列表中存在
		if($this->model->where("combine='{$spec}'")->find()){
			//如果存在返回0
	        $this->ajax('0');
		}else{
			//如果不存在返回1
			$this->ajax('1');
		}  
	}
	
}




 ?>